home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 April
/
EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso
/
EARCD
/
comm
/
tcp
/
AmIRCii_2_8_2.lha
/
AmIRCii-2.8.2
/
doc
/
HISTORY
< prev
next >
Wrap
Text File
|
1994-10-14
|
60KB
|
1,677 lines
2.2.9
fixed memory leak
2.2.7
DCC SEND/GET now shows the size, if it exists.
You can now use \ to escape newlines in scripts.
2.2.5
New key binding, SCROLL_START, which moves the scroll
buffer to the start of the lastlog buffer. Bound to
meta1-< by default.
New arguemnt to /LASTLOG, -LITERAL, which allows you
to specify the next argument as the pattern to match.
Allows matching of numbers, eg
/LASTLOG -LITERNAL 6667
Channel keys, if set, are now shown in STATUS_MODE.
When DCC connections become connected, the remote IP number
is shown, for additional security.
2.2.3
I think the Makefile and config.h file are easier to use
now.
The control characters for bold, inverse and underline
have been changed to ^B ^V and ^_ respectively, so make
some sort of visual connection (B to bold, _ to underline)
with these characters.
2.2.2
New command, XTYPE. Happens like this;
XTYPE [-LITERAL] <text>
This text gets added to the input cursor, like /type does,
except bindings are ignored with the -LITERAL switch is
used.
New function $CURPOS() which returns the postition from the
start of the input line to where the cursor is now.
New STATUS_FORMAT variable, %> which makes anything beyond
it right justified.
It is now possible to close all DCC connections and kill all
EXEC'ec process by sending the client a SIGUSR1.
ON PUBLIC has now got this format:
$0 sender
$1 channel sent to
$2- message
New variable, NOTIFY_LEVEL, and window command NOTIFY_LEVEL,
which affect the notification of hidden windows. Same
arguments as LASTLOG_LEVEL.
Two new level of /IGNORE, CRAP, and CTCP.
New functions, MYCHANNELS() and MYSERVERS() added.
MYCHANNELS() takes a window refnum (defaults to current
window), and returns a string with a list of channels on that
windows server. MYSERVERS() returns a string of the names of
the servers you are connected to.
New variable, XTERM_OPTIONS, which are passed to xterm, when
using WINDOW CREATE. Note that -geom switches are already
generated by ircII, so these will be ignored by xterm.
New variables, EIGHT_BIT_CHARACTERS, which, if set, allows
you to input 8 bit characters (such as the Swedish character
set).
New SERVER option, -DELETE, allows you to remove servers
from the internal server list.
New command line option, -v, which prints the version
and internal version (release date).
2.2.1
New WINDOW command LOGFILE has been added. It takes one
argument, the file name of the logfile to be used for this
window. Nothing is appended to this name, if you use
WINDOW LOG. If you don't set a logfile for the window, and
use WINDOW LOG, then ircII creates a name for you (old way).
ON SERVER_NOTICE has been changed, and any script which used
this will most likely not work any more. In the new format,
$0 is the server name, and $1- is the notice itself.
New variable, SHOW_WHO_HOPCOUNT, which if set will not filter
out the hopcount on a who reply.
2.2c
New CTCP, ECHO, which just returns what you sent.
2.2
New alias variables `$W', `$V' and `$H' which expand to the
current working directory, the internal ircII release date,
in YYYYMMDD format, and the current numeric being processed,
respectively.
/ME and /DESCRIBE no longer add a period to the end.
New variable NO_CTCP_FLOOD has been added. When set, it makes
your client only send out one CTCP REPLY each second, and will
ignore anyothers it gets for that second.
New BINDable key function, REFRESH_INPUTLINE, which, amazingly,
refreshes the input line.
Several /ON NUMERICS's have been changed such that $0 is now the
server name of the originating. These include the 31x series
(/WHOIS replies), which in turn is /ON WHO and /ON WHOIS.
Numberics 401, have also been changd for this.
MSG -channel is no longer supported. Multi-channal make
this switch unreliable.
IRCII now supports CTCP PING. You can call this with
/PING nick[,nick[,nick...]]
And it will show you how many seconds to takes to get a
message to them and back. Be warned that too many nick
will cause the server flood control to be used, making
the times calculated wrong.
You can now redirect in to a dcc chat connection, with
REDIRECT =nick command.
2.2pre8
New command, INPUT has been added. It takes arguments like:
/INPUT "prompt" command args
Where it displays "prompt" and then calls command, with args,
and with the line prompted for as $*. The use of this is
strongly encouraged over the use of variable $"..". Similar
problems that occur in /wait.
USERHOST and HOST commands have been changed to allow
asymnronous command execution, depening on the return of
the userhost reply. The form is
/USERHOST <nick> -CMD <commands>
Where $0 - $4 expand to the nick, oper status, away status,
username and hostname respectively.
If you want the screen to be scrolled like it was in 2.1.5
and before (A line at the bottom), edit source/window.h and
define SCROLL_AFTER_DISPLAY.
DCC CHAT has be improved. No longer will a collision cause
nasty things to happen - the client will automatically connect
if a collision is detected.
LASTLOG has been changed so that you can now use it like this:
/LASTLOG <pattern> <count> to get the last <count> lines that
match <pattern>.
LIST -TOPIC has been fixed, and its functionality changed,
so that it do NOT over ride other switches, but works with
them.
Three new variables STATUS_USER1-3 have been added, to combine
with the new STATUS_FORMAT variables, %X, %Y and %Z. <poxaV>
New command, PARSEKEY, added. The argument is one of the key
functions, and the effect is the same as would be if you
pressed a key bound to that function.
New command, SENDLINE added. The arguments parsed to it
are processed like normal text input, except they are not
caught by ON INPUT.
ON INPUT changed to catch all inputted text, not just
text being send to a channel or a nick. New variable
INPUT_PROTECTION added to stop people shooting their
own foot with the new ON INPUT.
One new BIND functions has been implimented -
ERASE_TO_BEG_OF_LINE (not bound to anything by default),
erases from the current cursor position to the beginning
of the input line - <poxaV>
Added new variable HIGHLIGHT_CHAR. That is /setable to either
BOLD, INVERSE, or UNDERLINE. It effects the character that
ignore + uses.
Made dcc chat messages show the time after them, if away,
like normal messages.
Made ctcp not reply to global messages, either in the form
of $*.domain, or #*.domain.
Added a new command line argument. `-S'. It does the
oppsite of the `-s' option, and also made -s the default.
Make then run ircserv if they want it, not if they don't
know.
Rewrote BreakArgs() in parse.c trying to fix a bug with
referencing NULL pointers on domain/ox.
More of the source files reformatted. Starting to get some
distance with this finally.
We now understand that &channel are channels, for the 2.8 servers
that will be arriving soon.
DCC LIST now shows the start time, and the number of bytes
sent, and read on a dcc connection.
Added a ctcp reply to dcc.c so that when a dcc collision
occurs, we also inform the other client of the event, rather
than them not knowing about it. (obsoleted)
Added new functiality to the /TIMER command. If it is called
with out arguments, then it list the commands that were
added with /TIMER, that are pending to be executed. If it is
called with the -DELETE flag, and given a refnum (first column
in the timer list), it will attempt to delete the timer. You
can also specific the TIMER command to use a refnum of your
choice, with the -REFNUM n flag. It generates an error if
the refnum already exists, or you specify a negative number.
It is illegal to remove a timer from itself.
Added new functionality to /window server command. You can now
do /window server server.name:port:password:nick, and the nick
will be set properly for that server.
Two new functions, $ENCODE() and $DECODE(). They work as a
pair, such that $ENCODE($DECODE(blah)) will return blah, and
the other way around. The primary use is tha $ENCODE() always
returns a value that is suitable for a variable name, so that
the well used $strip_chan() alias is not needed. <Daemon>
Added -WIDE flag to /LIST. Shows the channel names, and their
sizes in as little space as possible. <Troy>
HELP now works properly again. No recusive calls to irc_io, and
no ping timeouts, but with the same functionality as 2.2pre7.
New variable added, HELP_PROMPT. If set ON, nothing different
happens, but if set OFF, then ircII will not prompt for more
help after showing a file.
All the header files reformatted, and some of the source files.
Fixed bug in window server which caused the client to become
confused about nicks for each window.
Fixed bug that caused ircII to continue trying to connect to the
last server in the server list if it failed on every other one,
and often flooded umode s people. Nasty Nasty.
Fixed bug in status.c/window.c that caused the window_notify
to be out of date on occasion.
When changing servers, or when the last window to a server is
closed, the QUIT is actually sent.
2.2pre8.troy
A new command has been added - /TIMER. This takes the form:
TIMER seconds command
and causes the given command to be executed after the specified
number of seconds. Any number of timers can be issued, and
they do not need to be issued in order. For example, the following
alias:
ALIAS JUMBLE TIMER 10 echo one;TIMER 5 echo two; \
TIMER 15 echo three
will cause "two", "one" and "three" to be printed at 5 second
intervals, starting with "two" in 5 seconds. Using /TIMER should
be the preferred approach over /SLEEP.
ircII can now take advantage of X windows and screen to create
windows in different xterms or screen windows. The command to
create such a window is /WINDOW CREATE. Each window created in
this manner gets its own input line. This feature is
particularly useful if you use multiple channels. There are
still some things to be fixed with this. In particular,
prompted input can give unexpected results ($"..", /Oper and
server passwords, confirmations), as can the old form of the
/WAIT command. In short, when using multiple windows,
expect the unexpected. To use this feature you will have to
define WINDOW_CREATE in source/window.c.
A new form of the WAIT command, /WAIT -CMD command,
(or WAIT -CMD %process command) causes the given command
to be executed after the wait condition has occured.
For example, the following alias:
ALIAS BACKWARDS wait -cmd echo hello there;echo hi there
Will actually display "hi there" before "hello there", because
the "hello there" echo is not executed until a WAIT token is
received from the server.
This new form of /WAIT is to be used in preference over the
old form. The old form has innumerable problems, among them being:
If one WAIT is executed while another is pending,
both will be registered as satisfied when the first
returns. A warning is now issued when this happens.
If you are in a prompted input sequence (such as oper
password, confirmation prompts, and $".." input),
results can be unpredictable.
It is not consistant with the message driven programming
model which exists in ircII.
With multi window enhancements the problems with WAIT become even
more prohibitive, unless used in the -CMD form.
If you are echoing output to the screen from within the WAIT -CMD
form, it is probably a good idea to record the current window
and use XECHO -WINDOW to ensure that output goes where it should.
2.2lynx.pre8
Modified /me (edit.c) to automatically append periods,
feature used by new 'action' script.
Revamped many scripts, the config.h, little changes to
Makefile and help files.
Globally replaced all put_it("*** .. by new function say()
and changed put_it_always into yell.
2.2pre7.myc6.phone
Added Megre support of irc 2.8, there is still a long way to
go here. Code for the user mode e has been written, but not
added, as it probably won't be in the server.
Added window refnum to the output of the WINDOW LIST command.
Notify bug on start up fixed.
Two new functions GETPID() and GETPPID() added to allow the
process ID, and parent process ID to be accessable with in
a script. These have been left out for now.
Changed the KICK command, to allow the sending of kick
comments.
Bug in QUIT_ON_OPERATOR_KILL fixed, where last time was
not `seen' for long enough to be read.
Mail checking bug fixed.
Added new variable SHOW_STATUS_ALL. When set, it shows everthing
in every (visible) status line. When not set, it only show
things that (I think) are relevant to that window, and are
not the same as the current window. Things like nickname,
usermode, are only shown on one window, if connected to only
one server.
Made DCC with no arguments the same as DCC LIST.
Added the window notification status to WINDOW command (no args).
Away changed to allow different away messages on different
servers. Two flags -ONE and -ALL (-ONE default) for the sending
of the away message to the servers you are on.
Bug in $RAND() fixed <Daemon>.
2.2pre7.myc6
HELP_SERVICE and HELP_PATH are now SETtable variables.
Memory leak in add_to_window() is fixed.
WHICH doesn't wedge the client (by corrupting load_depth) any more.
MSG *, QUERY *, CTCP *, REDIRECT *, NAMES *, LIST *. [Daemon]
$U inserts cut buffer. [Daemon]
$RAND() is a bit more portable and doesn't use floating point.
Scripts updated to use `:' as noop rather than `#'.
2.2pre7.myc5
QUOTE USERHOST *really* doesn't core dump any more. B-)
`voice' script updated for new script parser.
2.2pre7.myc4
The Makefile now handles making the symlink for config.h. This
has the advantage of being slightly easier to use on a machine
without symbolic links; you just change the `LN' variable in the
top-level Makefile to `cp'. It also has the advantage that we
won't see patch files with two copies of the diffs for config.h
any more. B-)
Makefile.proto has been rearranged somewhat, and the dependencies
have been updated.
DCC GET bug from myc2 fixed.
2.2pre7.myc3
All the bloody #defines at the beginning of keys.c are now in
keys.h.proto, and are handled by `count'.
Stupid inverse (and bold) video bug from myc2 fixed.
2.2pre7.myc2
^Os are no longer appended to lines before storing them in the
lastlog. This avoids adding ^Os to lines in the log file when
using /LASTLOG. Bleah.
New commmand :, which is a noop. Using # as a noop command is
strongly discouraged, as it is treated differently in scripts.
(# at the beginning of a line in a script (ignoring spaces) means
to ignore the whole line.)
Bug in handling quoted braces from 2.2pre7.myc1 fixed.
`DCC GET nickname' gets the first file offered by `nickname'.
KICK comments are now displayed, if present.
Removed silly whitespace limitation in scripts.
JOIN no longer automatically adds a `#' to a channel name if missing.
[Avalon]
2.2pre7.myc1
New commands WINDOW BACK, NEXT, PREVIOUS. [phone]
New commands ON HOOK and HOOK. [Daemon]
DCC SEND and GET now display speed when transfer is finished. [Avalon]
(Rest of these by Mycroft:)
Added declaration for `newexp' in whilecmd() which Troy left
out.
Removed line discipline code for AIX.
Fixed ON_KICK.
Tabs now display in reverse video after limit reached, so you
can actually see them.
-c works again.
ON WINDOW doesn't recurse (and thus doesn't crash).
TOPIC and ACTION messages go in the right windows.
PAUSE_AFTER_MOTD is now a compile-time option and actually
works.
QUOTE USERHOST doesn't crash.
QUOTE ISON does something sensible.
USERHOST and ISON with no arguments no longer corrupt the
whois queue.
\ is no longer converted to \\ by /SAVE and in the history.
/MSG FOO, does the right thing.
/TYPE \^ now types out a caret, which you couldn't do before.
White space around braces is less important. The main effect
is that K&R style braces now work. You should be able to use
whatever indenting style you prefer. Note that braces inside
a command should be quoted now, a la \{ and \}.
2.2pre7
Meta4 is now sticky. That is, Meta4-C-D-E-F-G invokes the
meta4 versions of C, D, E, F and G. This effect lasts until
meta4 is invoked again. Additionally, the Meta4 characters
^h, SPACE, h, i, j, k, x, H, I, J, K, L and X have been
bound in such a way that BIND ^[ META4_CHARACTER now
gives a vi editing mode.
Bugs in complex '@' expressions fixed.
Thu Jun 11 09:48:47 1992 Charles Hannum (mycroft@ai.mit.edu):
* Makefile: Change RS/6000 support.
* config.h (DEFAULT_STATUS_CHANNEL): Delete duplicate definition.
* script/action: Remove `on's.
* script/bigcheese: Convert to 2.2pre6 syntax.
script/finger.who, script/fnet, script/killpath: Likewise.
script/kpstat, script/log, script/nicks, script/repeat: Likewise.
script/shell, script/voice: Likewise.
* script/version: Update version number.
script/netsplit: Rewrite to handle multiple splits.
script/brc: Fix typo.
* source/alias.c: Change function prototypes to match definitions.
source/ctcp.c, source/edit.c, source/status.c: Likewise.
source/term.c, source/translat.c, source/vars.c: Likewise.
source/window.c: Likewise.
* source/edit.c: Put comment delimiters around text after #endif.
source/help.c, source/hold.h, source/irc.h, source/ircaux.c: Likewise.
source/lastlog.h, source/term.h: Likewise.
* source/exec.c: Add support for AIX 3.
source/help.c, source/irc.h, source/ircserv.c: Likewise.
source/log.c, source/newio.c, source/scandir.c: Likewise.
* source/ircaux.c: Rename _RS6000 to _IBMR2.
source/status.c: Likewise.
* source/term.c: Remove unnecessary code for AIX 3.
* source/vars.c: Replace NULLs with 0s in integer context.
* source/status.c (convert_sub_format): Make bletch an array to
prevent being put in readonly storage.
(status_channel): Use format string even if *private*.
* source/notice.c (parse_server_notice): Don't call
reconnect_all_channels and reinstate_user_modes if first connect
(phone bug).
* source/menu.c: Make sure menu cursor doesn't get redrawn if menu
disappears.
* source/exec.c: Make sure messages get redirected after EXEC output.
* source/edit.c (evalcmd): Fix EVAL when subargs == NULL.
source/if.c (ifcmd, whilecmd, foreach): Likewise for IF, WHILE,
and FOREACH.
* source/if.c (whilecmd): Copy exp on every iteration, as parse_inline
destroys it.
* source/irc.c: Update version number.
* source/dcc.c: Include arpa/inet.h for prototypes.
* script/ping, script/whowas: New scripts.
2.2pre6
WARNING. 2.2pre6 will almost certainly require changes
to your .ircrc and script files due to changes in the
parsing. The intention at this point is to keep the new
syntax forever. That is, unless there's something I
have missed, there will be no further script breaking
changes.
DISPLAY now defaults to OFF in scripts.
Two new meta keys have been added. Meta3 is bound by
default to META1-[, and Meta4 is left unbound.
DCC SEND now checks that a file exists before sending
the request. Memory allocation bugs when using DCC
file transfers with ~ pathnames fixed.
If you have experienced corrupted output from ircII,
this should be fixed.
Several display bugs, including a memory leak related
to using windows have been fixed.
Missed PINGs when in the help pager fixed.
A new command, EVAL, has been added. EVAL causes
its arguments to be passed through variable substitution
and executed.
Alias substitution is no longer performed in scripts,
regardless of the setting of INPUT_ALIASES. To force alias
substitution, use EVAL.
A command beginning with '@' is taken to be an
alias expression as would be normally parsed
from within ${}. The expression is substituted and
the substituted value discarded.
The script loading path is now accessible as the SET
variable, LOAD_PATH. Additionally, if you are unsure
as to which directory a script being loaded is in,
the /WHICH command will display the full path to a
script. eg. /which global shouls give something on all
systems.
Bugs in Menus which caused core dumps have been fixed.
Bug in DCC which caused incoming DCC messages not to be
directed to window level DCC fixed.
Bug with +s channels and /names fixed.
Connections to servers on UNIX domain sockets are now
supported.
Aliases can now be recursive up to a maximum level
as specified in the variable MAX_RECURSIONS.
The inline variable parser now substitutes \n, \r, \0
and \p too their equivalents in the CTRL-P convention.
Having ! as the first character for the INDEX function
no longer causes just unescaped characters to be matched.
It is now a normal character in this context.
The $%FUNCTION syntax is no longer supported. You can
still use functions - just remove the '%'.
The parser used when INPUT_ALIASES is on has been changed
again. Text between brackets (...) and {...} is no longer
subject to alias expansion, unless the opening bracket is
escaped (ie... \( or \{ ). This affects alii and input when
INPUT_ALIASES is on.
Additionally, You can return to full alias substitution
within ${...} by enclosing the substitution text in
[...]. Thus if $0 == test, and $bear == black
${[$0]} expands to "test"
${[$bear]} expands to "black"
${bear} also expands to "black"
${ bear == [black] } expands to "1",
${ [$0] == [test] ) expands to "1"
${ [$0] == [black] ) expands to "0"
${ [$0](this) } expands to the return value of $test(this)
There is a new form for the if command. This is:
if (expr) {then_commands} {else_commands}
Note that because the expression, the then_commands
and the else_commands are between brackets, they are
not expanded in alias expansion. This is taken care of
in the if statement itself. The expression is treated
as if it were enclosed in ${...}. Thus all the comparisons,
groupings, arithmetic and boolean operations that a
available in ${...} can be used in the expression.
Also note that you can have more than one command in
each of the then and else parts of the condition.
The result is that what used to look like this:
on ^send_public * if "$^!^=^>^<C=$^!^=^>^<0" \
"echo $%format(11 <$N>) $^"1-" \
"echo $%format(10 <$N):$^"0> $^"1-"
can (and must) now be expressed like this:
on ^send_public * if ( C == [$0] ) \
{ echo $format(11 <$N> $1- } \
{ echo $format(10 <$N):$0> $1- }
Note that this means there is no longer any need for using the
^ escaping, and this may disappear in a later version unless
there are strong objections.
The same thing has happened to while and foreach, which now
have the syntax:
WHILE (expr) {commands}
AND
FOREACH structure index {commands}
The effect of this on WHILE and FOREACH is that you no longer
need to double up occurrences of '$'. You can still get this
effect if you wish by escaping the leading bracket in the
appropriate expression. Additionally, both while and foreach
can now be recursive. Thus the following works as expected:
assign a.1.1 one one
assign a.1.2 one two
assign a.2.1 two one
assign a.2.2 two two
alias fe
{
foreach a i
{
foreach a.$i j
{
echo $i $j $a[$i][$j]
}
}
}
THE OLD SYNTAX FOR IF, WHILE AND FOREACH IS NO LONGER SUPPORTED.
In scripts, lines beginning with '{' and containing other text
are joined on to the previous line with one space placed between
the two lines, thus the above example could have been written as:
on ^send_public * if ( C == [$0] )
{ echo $format(11 <$N> $1- }
{ echo $format(10 <$N):$0> $1- }
Additionally, the {..} syntax for grouping within scripts
can now be nested. Nested {...} pairs must have the brackets
placed on their own line, and the brackets are included in the
resulting text. Thus the following is equivalent to the above:
on ^send_public * if ( C == [$0] )
{
echo $format(11 <$N> $1-
}
{
echo $format(10 <$N):$0> $1-
}
Or, for a little more verbosity:
on ^send_public * if ( C == [$0] )
{
echo Current Channel:
echo $format(11 <$N> $1-
}
{
echo Another Channel:
echo $format(10 <$N):$0> $1-
}
2.2pre5
Bug in "Password" prompt for server passwords fixed.
Bug in WINDOW REFNUM fixed. <phone>
Bug in ON DCC_CHAT which prevented interaction with
the server fixed. <phone>
Bug which caused +w'd non-opers to see their own WALLOPs
twice fixed. <phone>
Additional operators have been added to the ${...}
expresions. They are the equality and inequality
operators (==, !=, >, >=, <, <=), the unary NOT
operator (!), and the conjugation operators (&&, ||, ^^).
These take 0 as false and any other number as true,
and return 1 as true and 0 as false.
On top of these are the assignment operator (=) and the
string concatenation operator (##). The assignment operator
means that the following now makess sense, and causes the value
of first_name and last_name to be concatenated with a space
inserted between them, and the value assigned to full_name.
@ full_name = first_name ## [ ] ## last_name
The following is also possible:
@ a = b * (c + d)
A new variable has been added for script developers.
The DEBUG variable enables three types of debugging
output dependant on the settings of various bits.
bit value purpose
0 1 Display all commands executed
1 2 Display all alias substitutions made
2 4 Display all function calls and return values
More changes to parsing have occured. Firstly, there
is no longer any '\' substitution on input. Thus, when
you type text to a channel, in a /msg or elsewhere, it
comes out exactly as you type it.
On the other hand, '\' processing does exist anywhere
that alias expansion occurs. The result is that if you
have INPUT_ALIASES ON, you won't notice the difference.
Also, aliases and ons still get the '\' substitution
performed on them. All \c pairs where c is any character
are collapsed to just 'c' after all parsing has been done,
with the exception of ", !, =, < and >, which are
required by if and while. This shouldn't be the case
for much longer.
Function and array index expansion now only observes
unescaped bracket delimiters. Thus $%index(\) abc\)def)
returns 3.
Finally, the '%' is no longer needed for functions.
Thus you the above example is the same as
$index(\) abc\)def)
The net result of all the changes to parsing in this
version should be to make both command entry and alias
construction much more intuitive.
A new function, TDIFF, has been implemented.
TDIFF takes as its argument a time interval in seconds
and returns it as the english representation of
that number in the form:
dd days hh hours mm minutes ss seconds
omiting any zero values, unless all values are zero,
in which case the seconds field is returned.
Bugs in dumb mode fixed.
The parsing of ${} expressions has been changed. When
mathematical expressions are being used, order of
operations is respected and brackets are recognised
and treated correctly. Additionally, functions can
be referenced (without needing the % qualifier), and
functions and aliases can be mixed to give versatility.
This may break some numeric expressions, but will make
a lot more a whole lot more legible and intuitive. For
example, the following:
${3*(INDEX(x abcxdef)+2)}
Yields 3*(3+2) = 15
or, if you have an alias:
ALIAS TEST echo ${INDEX(x $0)*5}
and then type:
/TEST abcxdef
you will get back 15
Then, if you have a set of functions, A.1, A.2, A.3,
and the variable IND is set to 2, then ${A[$IND]()}
will resolve to an invocation of A.2 as a function.
If you have a function, F, and a pair of arrays A
and B, each with elements numbered 1-10, and F returns
either A for 1 and B for 2, then the following:
${F(2)[5]}
returns element 5 from array B.
Because order of operations is now respected, both
${3*2+5} and ${5+2*3} return 11.
2.2pre4
/WHO * now results in failure if you are not on a channel.
Behaviour of positioning when menus are being used has been
corrected. There's the possibility that I broke something
else while doing it though.
The worst of the memory leaks has been fixed. There are
still some memory leaks apparently present. If you compile
with ALLOC_DEBUG defined, then when the memory tracking
table gets full (indicating a leak), IRCII will abort,
generating a debug.log which lists all allocated blocks
with their sizes and contents in ASCII. This should
prove helpful in tracking leaks.
The slosh (\) no longer quotes characters which have no
special meaning, thus allowing you to enter a '\' in the
text without doubling it up. Additionally, The \n sequence
no longer works. Use ';' in aliases instead, and quote the
CR or NL character to get the same effect interactively
(ie. ^Q^J or similar).
Fixes to the multitude of bugs in pre3.
2.2pre3
If the environment variable "MAIL" is set, IRCII now uses
it to determine which file to check for mail.
The VERBOSE_CTCP variable has been fixed.
A new function, CONNECT(), gives access to TCP sockets
at the application level. The arguments are the destination
host and port number, and the return value is the
file descriptor (fd) associated with that socket.
A null file descriptor indicates that the host could
not be resolved, and a negative descriptor indicates
that an error occured in connecting.
To test this facility, create a connection to the
echo service on some machine with:
/alias socktest echo $%connect(host 7)
Which will echo the file descriptor.
Then send messages to it with:
/dcc raw fd host message
These will be echoed back at you by the remote host.
Incoming messages can be intercepted with ON DCC_RAW,
which has the following formats:
fd host D data
fd host C
fd host N port
fd host E port
The D message indicated incoming data.
The C message indicates that the socket has been closed.
The N message indicates that a socket listening on the
specified port has accepted a connection. fd in this case
is the file descriptor for the new connection.
The E message is generated when a CONNECT() results in a
successful connection.
The LISTEN() function creates a listening socket. It takes
a single argument - the port number on which to listen. If
this is zero, then a port number is assigned. The return
value is the port number on which the socket is listening
for connections. A port number below 1025 results in an
error.
Conventions to be used for the socket access:
Scripts using sockets should never use the
serial number 0 in their hooks. As their first
act before using the DCC_RAW hooks, they should
set:
ON ^DCC RAW * #
To ensure that all raw DCC sockets produce no
output.
A new set of hooks should be created for each
active socket at a chosen serial number. One
must always exist to detect the close message,
and as its last act must remove all the hooks
for that file descriptor.
You can now "send" a message to a command. For example,
/msg /echo this is a test
is the same as
/echo this is a test.
The primary use of this is to allow a /QUERY of a command.
Thus if you /query /echo, everything you type to the
current window will simply be echoed back, and if you
/query /exec, you can use IRCII as a shell. Note that
when querying a command, you may need to use XECHO -WINDOW
to ensure output goes to the right place.
CTCP UTC has been added. This is primarily for robots
to send date and time information to users and have it
displayed in local time. The format of the UTC
CTCP is:
UTC number
where number is the ASCII representation of the 32 bit
integer representing the time as is used on UNIX machines.
When IRCII receives this CTCP, it replaces the text of
the local time expressed in the local language back into
the original message. Thus if you send the following:
/NOTICE nick The time is ^AUTC 702777074^A
The user might see:
-yournick- The time is Thu Apr 9 09:51:14 1992
(if their timezone is Australian Eastern Standard Time).
Menus have been added. The menus are totally user
configurable and a test menu has been provided in
the top level directory of the IRCII source distribution.
To use this menu, copy it to your home directory,
run IRC, and to the following:
/MLOAD test
/SET menu Main Menu
Control-R is bound to ENTER_MENU, and while in the menu
you can use vi-like keys or EMACS-like keys to move
through the options, and either '.' or SPACE to select
an option. The format of the menu file is as follows
A line beginning with a '#' represents a comment.
Blank lines are ignored.
A line beginning with the word "MENU" starts a new menu
and gives it a name.
A line beginning with the word "OPTION" adds a new option
to the menu, gives it a name and describes what it does.
For more information, see the demonstration menu shipped
with the sources.
Bug which cleared the input line when calling WAIT from
ON TIMER fixed.
Bug which left channel names from a previous connection
in the channel list even if they could not be rejoined
fixed.
User modes are now restored after a disconnect/reconnect.
Bug which caused the scrollback buffer to duplicate messages
when HOLD_MODE is on fixed.
USERHOST is now used in place of WHOIS to retrieve IRC-Op
information on WALLOPing users and in the case of 2.6.2
servers, user@host information for IGNORE. This means
that there are now three commands going through the WHOIS
queue - WHOIS, ISON and USERHOST. It is not a good idea
to /quote these, as you will be likely to corrupt the
WHOIS queue. USERHOST can now be issued with /HOST and
/USERHOST
It is now possible to have more than one ON hook executed for
each event triggering a hook. This has been done by adding a
new serial number concept to the ON command. Each ON hook has
a serial number attached. Serial numbers can be any number
from -maxint to maxint, with the default being 0.
When an event triggers a hook, IRCII now goes through the ON
hooks added for that event, and for each serial number used
by ON hooks in that hook type, finds the best match out of those
ON hooks which have that serial number and executes that ON
hook. The hooks are executed in order of serial number. Thus
if you set up the following set of MSG hooks.
ON #^MSG -666 * echo Message coming:
ON ^MSG * echo Message from $0: $1-
ON #^MSG 666 * echo I got one, I got one!
ON #^MSG 666 WiZ echo WiZ hath spoken
will cause the following to appear when you receive a message:
Message coming:
Message from nick: text
I got one, I got one!
And the following if you receive a message from WiZ:
Message coming:
Message from WiZ: text
WiZ hath spoken
The default serial number is 0, and the serial numbers are always
executed in order, starting with the lowest, and ending with the
highest.
Although the '^' modifier can be used with any serial number,
it will only suppress the decault action if used with serial
number 0. Thus if the only message hook you have is:
ON #^MSG -666 * echo Incoming:
You will see the following when you receive a message:
Incoming:
*nick* text
It is advisable to place any ON hooks which do not suppress the
default action in a serial number other than 0. In particular,
TIMER hooks, which are generally not intended to exclude other
TIMER hooks, should be placed at different serial numbers wherever
possible, and never on 0 (since 0 is the most likely place to
get a clash if anybody does use it).
The # modifier (bind to current server) for ON commands has been
changed to '&'.
Fixed display bug with reverse and bold modes which caused
these modes to be turned off if a line wrapped. Also fixed
NOTIFY and LINKS problems.
The bug in user mode processing when a MODE command makes no
actual changes to the user mode has been fixed.
A new status line variable, %B, gives the number of lines
in the hold buffer for the current window. Its format
is controlled by the STATUS_HOLD_LINES variable. %B is only
updates once for every ten lines.
New status line variable, %# added. This returns the current
user mode. Its format is controlled by the STATUS_UMODE
variable.
The behaviour of FLUSH when HOLD_MODE is on has changed.
it now clears the hold buffer for the current window before
flushing further output from the server. The result is that
with HOLD_MODE on it is now impossible to get into a
situation where you are being flooded by server output
with no hope of reprieve.
2.2pre2
^G bug fixed. A couple of small things cleaned up.
2.2pre1
Note that there have been several new variables added in
this version, so old config.h files won't work. Also the
IRCIIhelp service is being regionalised. You should set
HELP_SERVICE to the nearest IRCII help service in config.h
Three new BIND functions have been implimented -
SCROLL_BACKWARD (bound by default to ESC-p), SCROLL_FORWARD
(bound by default to ESC-n), and SCROLL_END (bound by
default to ESC-e). These allow you to scroll through the
output stored in LASTLOG without having to use the
LASTLOG command. SCROLL_BACKWARD causes IRCII to scroll
half a window of LASTLOG data on to the screen, pushing
whatever is in the window towards the bottom. ESC-p
reverses this, thus looking at newer parts of the LASTLOG
history. ESC-e exits this scrollback buffer facility
at any time. This facility is probably best used with
HOLD_MODE set to ON, and requires SCROLL to be set to ON.
If you use this facility with HOLD_MODE off, then when you
leave the scrollback buffer, either by SCROLL_FORWARDing
to the end of it or SCROLL_ENDing, all text that has been
accumulated will be printed. If you have HOLD_MODE on,
the window will be held until you manually unhold it.
Provision has been made for memory allocation debugging
for developers. Add -DALLOC_DEBUG to the CFLAGS, and
IRCII will abort (generating a core dump) should memory
be freed which was never allocated. Additionally, a
dump will be made showing the locations of all allocated
memory with the two preceding long integers in memory.
Additionally, SEGV will be trapped and will generate
a similar log, with the addition that if you are using
an IBM RS6000 it will dump a heap walk. People on other
platforms will need to either add heap walk code for
those systems or manually walk the heap using the
debugging information. The dump is stored in debug.log
A new XECHO flag, -WINDOW, has been implimented. Thus:
XECHO -WINDOW 1
always sends output to window 1, and
XECHO -WINDOW JUNK
always sends output to the window named "junk". If the
window does not exist, the -WINDOW flag has no effect,
except to cancel any earlier -WINDOW flag.
Two new modifiers have been added to /ON. If the first
character of the first argument (the hook name or numeric
number) is '#' or '@', the ON only affects things relating
to the current server. Additionally, if it is '@', and there
is no match for things in the list of ONs applying to the
current server, it will not resort to the default list.
[Changed in pre3]
WHO -LUSERS (returns only non-operators) and
WHO -NICK <nickname> (returns only people matching the
nickname argument) have been implimented.
A new variable, DCC_BLOCK_SIZE controls the size of
blocks sent when sending files using DCC SEND.
The default is normally 512. Increasing this number
increases network efficiency. Decreasing this number
slows down the transfer, but also decreases the chances
of the transfer being aborted over bad links.
Use of real estate when SCROLL is ON has been improved.
There is no longer a blank line between the text and
the status bar. This takes a little getting used to,
as now the screen scrolls before a line is printed
rather than after.
You can now include text modification characters
(^B, ^V, ^_ and ^O) in STATUS_FORMAT. If you change
the format at the start of STATUS_FORMAT, you will
have to do it again after any %C or %U, as these
both reset it to reverse video.
You can no longer abbreviate QUIT, SIGNOFF, BYE or EXIT
in NOVICE mode.
All restrictions on IGNORE by user@host removed.
Internals given a decent reworking. There could be bugs here.
You should now never see ircd's colons marking the last
argument.
Added two new wildcards to the pattern matching system.
'%' matches any sequence of characters except a space.
'?' matches any single character.
International character set support added. Translation
tables are supplied for various terminal types. To activate
the appropriate character set, /SET TRANSLATION charset_name
eg. For an IBM PC set up for US English (Code page 437),
/SET TRANSLATION CP437
The translation tables assume that text transmitted on the
servers adheres to ISO 8859/1. If your terminal understands
ISO8859/1, set TRANSLATION to LATIN_1. The default is ASCII,
due to the fact that nothing can be safelt assumed about any
terminal.
Bug in /set history 1 fixed
Bug with redirecting to yourself fixed. It is now illegal
to redirect to yourself.
$P (Chanop status variable) fixed, and a new status line
substitution, %@, which subsitutes to STATUS_CHANOP if
you are chanop on the channel shown on the status bar.
$~ now substitutes to the last word on a line.
New functions:
ISCHANNEL(word) Returns 1 if word is a valid
channel name.
ISCHANOP(nick channel) Returns 1 if nick is a chanop
on the given channel.
WORD(number wordlist) Returns the specified word from
wordlist. The first word is
numbered 0.
WINNUM() Returns the current window number.
this is always the window which is
indicated by STATUS_WINDOW.
WINNAM() Returns the current window name.
this is always the window which is
indicated by STATUS_WINDOW.
If the window has no name, it returns
nothing.
INVERSE_VIDEO variable and beyond fixed.
A new character attribute, bold, has been added. This
is enabled and disabled with ^_. Disabling bold has
the side effect of disabling inverse and underline
without recording it internally. You should allow for
this when using bold text. Bold text can be enabled
and disabled with the BOLD_VIDEO variable.
The status line problems with attribute characters
have been fixed. You can now include attribute characters
in the status line and they will take effect. One
application of this is to change the status bar from
inverse text to bold or underlined by including ^_ or
^V at the start of STATUS_FORMAT.
You can now refer to the elements of structures
(normally Structure.Element) as Structure[Element].
When you do this, Element is evaluated as an expression
before it is appended to Structure. Thus if A has the
value "TEST", and there is a variable "B.TEST" with the
value "Message":
echo $B[$A]
yields:
Message
These can be repeated, as in:
$MATRIX[0][0]
which becomes "$MATRIX.0.0". The result is a pseudo-array
effect.
New command, FOREACH has been added. The format is
FOREACH structure variable command
This causes command to be executed once for each
element in the named structure, with variable
substituted to the name of the element. Thus
if you have assigned:
/ASSIGN A.1 ONE
/ASSIGN A.2 TWO
/ASSIGN A.3 THREE
/ASSIGN A.4 FOUR
/ASSIGN A.5 FIVE
and have an alias:
/ALIAS SHOWA FOREACH a i ECHO $$i
and type
/SHOWA
The output will be:
1
2
3
4
5
Alternatively, you can use:
/ALIAS SHOWA FOREACH a i ECHO $$a[$$i]
to get:
ONE
TWO
THREE
FOUR
FIVE
Note that if you use numbers, 11 comes before 2.
The easiest way around this is to start numbering
elements at a higher number, such as 100.
Note that FOREACH, like WHILE, does variable
substitution once when the FOREACH command is
evaluated, and once for each iteration. This
means that in general you will need to double
up any occurences of '$'.
2.1.5b-2.1.5g
Functionality of WHO -HOST and WHO -SERVER returned.
New WHO flags, -HERE and -AWAY added.
New functions:
MATCH(pattern word-list) Returns an index into the word
list of the first word that matches
the pattern, starting at 1 and
returning 0 for no match.
RMATCH(word pattern-list) Returns an index into the pattern
list of the pattern that word best
matches.
STRIP(charlist line) Strips all occurrences of characters
contained in charlist from the line.
You no longer need to supply the leading # to JOIN and PART.
If the leading # is omitted, and you are on a 2.7 server,
it will be inserted. Notable exceptions to this rule are
channel '#', which would have no name if the # were omitted,
and channels beginning with '##'.
CTCP Action format changed so as not to interfere with channel
text. ON ACTION and ON SEND_ACTION added. You can now suppress
ACTION text with these, or reformat it.
Many bugs fixed.
2.1.5-2.1.5a
New functions:
USERHOST() Returns the user@host of the sender
of the message currently being
processed.
WHO -HOST and -SERVER is no more supported. (This is reenabled
in a later version).
The contents of an alias can now be surrounded by '{' and '}'
in and broken over multiple lines. See script/finger for an example.
Indentation with leading tabs and spaces is now permitted in script
files. See /HELP LOAD.
HOLD_MODE no longer holds when you are being active in that window.
If you have SHOW_AWAY_ONCE on, away messages are remembered and
only displayed when they change.
Notification of the receipt of a CTCP request no longer occurs
unless VERBOSE_CTCP is on.
Prompts from EXECed processes now appear in the input window if
$T appears in INPUT_PROMPT.
Scripts and help files can now be stored in compressed format.
They will be uncompressed as they are used.
All the scripts have been updated and many helpfiles written and
rewritten. Many bugs have been fixed, support of newer server
features added. Server 2.7 compatibility improved.
There have been major changes in the command parser. Commands
are not expected to have a leading / unless entered interactively,
if you experience incompatibilities, you will have to add 'say' and
'send' wherever you have made aliases that send to the channel or query.
See also /help ircII programming for this. Also the ';' has a new
meaning as command seperator within ALIAS, BIND and ON. You might have
to \escape it.
CTCP ACTION has been implemented which permits you to send
descriptions of actions/'feelings' to other people on channels
and even through queries. You can use it with /me and the action
script. See also: /help load action.
* 2.1.5 (by lynX) Text is historically from new to old, that is - read it from bottom to top!
Updated help files: NEWS LOAD/* WHOIS IRCII/IRCII IRCII/PROGRAMMING
ALIAS/ALIAS BIND/PARSE_COMMAND BIND/EXAMPLES ON/ON CTCP/* ME DESCRIBE
ON/SIGNOFF SEND SAY NOTIFY SET/COMMAND_MODE ALIAS/SPECIAL RESTART
SET/LASTLOG_LEVEL
Threw out /who -s and -h, they were superflous and bad.
Cleaned up the vars.h and hook.h by cleaning the protos... FINALLY!
Wrote count.c and the proto headerfiles, adapted the Makefile.proto
Added underlining mechanism with put_it-code ^V.
Updated man page a bit.
Added optional code to limit the notify list length (MAX_NOTIFY).
Removed lots of do_hook-numeric if's by splitting the numeric's switch.
Rewritten /notify list.
Simplified notify.c and whois.c to no more support channel notify.
(If ISON doesn't, why should we then?).
Added Troy's alias functions MATCH and USERHOST, but no HELPs.
Added support for { } constructs in scripts and indentation.
Removed the oper-flags from the IRC commands, if you issue oper commands while
you're not one, you get the beautiful ircd error messages.
Seem to have fixed the problem in the status_mail sprintf...
Changed the handling of 2.7 UserHost in PRIVMSG etc.
The $, is now also set when you get an invitation.
Added oneself's nickname as command alias for /me. "/lynx smiles."
Improved HOLD_MODE: it no more holds a window if the user is being active on it.
Added some numeric codes in numbers.c for 2.7 compatibility.
Added support for ~ in IRCPATH, but only referring to the user's own home-dir.
Suspended a piece of new code in mail.c which seems to cause weird problems.
Introduced lastlog_level 'ACTIONS' to log in and outgoing CTCP ACTION lines.
Made 317 (whois-idle) a tiny bit smarter (seconds or minutes).
Added #ifdef SVR4 code.
Added SHOW_AWAY_ONCE and VERBOSE_CTCP vars.
Replaced QUIT_ON_KILL variable by a #define.
Applied Allanon's patches to ctcp.c and dcc.c, removal of DCC/SENDCRC + GETCRC.
Added support for numeric 364 (new LINREPLY). Old LINREPLY code not removed.
New handling of process prompts. In the past they were put into the window->prompt
and then inserted into the INPUT_PROMPT var mask, which looks *ugly*, also the
input would not get echoed. Now it does this: If a prompt is detected you are
elegantly prompted, as if you were in the program itself, when you enter your
datum prompt and input are displayed in the window the way it would look outside
ircII. This is a great step towards using ircII as an interface to all kinds of
things, ircII + /bin/sh as a replacement for tcsh.. Ha ha I'm kidding. Well, for
a MUD client it's fine. ircII can now be used as MUD client.
BTW, I had to do profound changes in the handling of prompts throughout the source.
Fixed ancient bug concerning process-query: you can now type 'just CR' into an exec.
Fixed strange bug with /save prompt. Still don't know what was actually wrong,
but it behaves correctly now. :-I
Away messages are only displayed ONCE.
Added #ifdef into new_free() to hunt for free's that should not take place.
If you have spare time hunt some of those.. ;)
Added the commands '<text> and :<text> which only work in COMMAND_MODE and
act like /send and /me respectively. This is a MUD standard.
Added /restart, /xtra and /host which calls USERHOST. The last two have no
/help files.
Introduced Allanon's implementation of ZCAT help file display.
Also scripts (files for /load) can be stored in compressed format if one likes.
Patched /save to work with totally dumb terminals, with -d it saves without prompting.
Added special sequence '$D' to the alias parser. Thanks to The_Edge for the idea.
Added binding ESC-G to the 'commander' script that uses it.
Applied Veggen's patch to alias.c concerning uninitialized variables.
Removed /set VERBOSE_QUERY since the same can be achieved with /^query...
(If you want it use /alias quer ^query)
Added DCC SENDCRC and GETCRC by Allanon. These functions transmit and receive
files with checksum. It has to be tested and decided if a checksum is needed
or futile by TCP definition. The commands are temporary and should replace
the current SEND/GET or be removed away again. Since this decision affects
other client coders, too, it should be discussed via USENET or interactively.
Added ';' handling: In ALIASes, ONs and BINDs it is legal to use ; as command
seperator instead of \\n while in LOAD and interactive mode ';' is considered a
normal character (to be able to type ;-) ). With a little magic I managed to make
it possible to escape the ; with \; in aliases if you want it as character. *PHEW*
Repaired /whois 317 (idle time output).
Added /whois <server> <nick>[,<nick2>..] format to /whois command.
Added commands /me and /describe to produce ACTION messages.
Added CTCP ACTION handling.
Disabled GLOBAL_IRCRC, replaced by automatic /load of 'global' which is
supposed to be in the IRCPATH. This permits easier debugging and developing
of scripts by redirecting everything into an other directory.
If a person has an .ircrc the person is assumed to not be a novice, the /HELP NEWUSER
notice is not output.
Added variable QUIT_ON_KILL to select if one wants to /quit when
one is killed. /ON KILL has not been implemented for obvious
reasons of possible misuse.. :-(
Added #ifdef AUTO_RECONNECT to make ircII not auto-reconnecting.
Added CTCP TIME by Veggen.
Added 'signoff reason' to signoff message. Modified some messages concerning
CTCP and NOTIFY for beauty or better elequence...
Added /send command which sends something to the current query or channel
as if it were typed. Acts as replacement to bare text, since that is now
interpreted as commands
Added /say command which does the same as '/ <text>'
and /# (or # in script mode) command which is the same as /comment.
Introduced script (command) mode and COMMAND_MODE variable.
Removed some code that would never get used, as my optimizer told me.
Bug fixes concerning buffers, /if command with HP/UX, ...
by Allanon and Veggen.
* 2.1.4c
Some bug fixes, including the CTCP DCC bug and substitution
of '\' in alias expansion.
Bug in SAVE with "-d" mode fixed.
* 2.1.4b
Support for server version 2.7
* 2.1.4a
Bug fixes.
* 2.1.4
$N now substitutes correctly to the nick on the current server.
Bug with changing servers when on multiple channels fixed.
ISON based NOTIFY has been implemented. In addition, the
code has been modified so that NOTIFY will cause much lower
network loads.
/TOPIC can now change the topic of a # channel on a 2.6.2b
or newer server. The new format for /TOPIC is:
/TOPIC [<channel>] [<topic>]
Aliases and ASSIGNed variables can now include a dot
('.') in their names. When listing aliases and assigned
variables, anthing after a dot in the variable name
is suppressed, unless typed explicitly. If two variables
have the same name after this, only the first occurence
is printed. This allows a structure-like effect.
/ASSIGN A.A This is a
*** Assign A.A added
/ASSIGN A.B this is B
*** Assign A.B added
/ASSIGN A.C This is c
*** Assign A.C added
/ASSIGN A
*** Assigns:
*** A <Structure>
/ASSIGN A.
*** Assigns:
*** A.A This is a
*** A.B this is B
*** A.C This is c
/ALIAS A.A alias a
*** Alias A.A added
/ALIAS A.B alias b
*** Alias A.B added
/ALIAS A.C alias c
*** Alias A.C added
/ALIAS A
*** Aliases:
*** A <Structure>
/ALIAS A.
*** Aliases:
*** A.A alias a
*** A.B alias b
*** A.C alias c
Note that structures are effectively in a different naming
space to non structures. Thus, you can have a structure called
'A' and a normal variable, also called 'A'.
Server notices are now displayed with the SNOTE level.
Four additional lastlog levels, USERLOG1-USERLOG4, are
reserved for users. These can be used by displaying text
with the XECHO command.
Four new alias substitutions: $O substitutes to the value
of STATUS_OPER if you are an operator, $P to '@' if you are
a channel operator on the current channel, $M to the modes
on the current channel, and $A to the current away message.
* 2.1.3c
A new DCC command, rename, changes the name of a file sent
to you by somebody else. DCC file transfer should also accept
the ~ now.
Some bug fixes.
* 2.1.3b
A new log level, OPNOTE, has been added. This level applies
to notices sent to operators, such as KILL notices.
A new status line variable, %F, lists the hidden windows in
which there has been activity since they were made hidden.
An associated IRCII variable, STATUS_NOTIFY, sets the format
for this to be displayed.
New ONs: CHANNEL_NICK and CHANNEL_SIGNOFF are executed once
for each channel from which the user changes nick or signs off.
If all the CHANNEL_NICK and CHANNEL_SIGNOFF hooks which are
matched suppress output, then the default output and the NICKNAME
and SIGNOFF hooks will be suppressed.
Various bug fixes.
* 2.1.3a
Various bug fixes.
* 2.1.3
Added support for the Tektronix XD88
Added DCC talk. To use this, /DCC TALK user@host. DCC talk
will only send an announcement once, rather than an infinite
number of times.
Fixed bug with functions which have no arguments. Added RINDEX
function.
* 2.1.2.2
New help files RULES and IMPORTANT included. You should
read these before installing help and decide on a site
by site basis if you wish to install them. If not, remove
them from the help directory.
Hopefully fixed the WHOIS queue once and for all.
Fixed some bugs outstanding from 2.1 (HELP paging with
HOLD_MODE ON, Core dumps after a WHOIS or WHOWAS if the
WHOIS queue was empty, core dumps when the status line
is an empty string)
* 2.1.2
Added DCC file transfers (GET and SEND), and DCC CLOSE
Added new window command - NOTIFY. This toggles the
notification status of the current window. A window with
notification on causes a message to be printed in the
current window if output to that window occurs while
it is hidden.
Changed group message ([$#]*.domain) handling so that such
messages are treated more like WALLs than MSGs. (Meaning
that it beeps if you have WALLs set in BEEP_ON_MSG, not
if you have MSGs set).
The type of the MAIL variable has been changed from BOOLEAN
back to INTEGER. If set to 2, it will now display some of the
headers from incoming mail. Setting it to 1 is the same as
setting it to ON used to be.
/ON SERVER_NOTICE processes messages sent from the server
as NOTICEs, including MOTDs and many server status messages.
The easiest way to see what is trapped by this is to do a
/ON ^SERVER_NOTICE * /echo [SNOTICE] $* and see what happens.
/WHO -FILE performs a /WHO, displaying only those nnicks
contained in the named file. This allows a larger list to
be kept of people you know on IRC but not well enough to
put them in the NOTIFY list.
If a channel name exceeds the channel name width in the output
of /NAMES or /WHO, the last character that would be displayed
is shown as a '>'.
Added NOVICE variable. Causes a new user message to be printed
after .ircrc has been loaded if it is still set to ON, and
refuses to allow any ON commands to be executed.
Added /ON RAW_IRC to deal with any unknown commands coming from
the server. This is primarily of use to people working on server
code, or people using servers with new commands which IRCII does
not yet recognise.
Direct Client Connections implemented. /DCC CHAT opens a direct
connection to another client. The user at the other end can either
accept the chat with a /DCC chat or ignore it. Messages are sent
across DCC CHAT connections with DMSG or DQUERY. A new status
specifier, %D (STATUS_DQUERY) is supported, which substitutes
the DQUERY value. Two more /ONs, DCC_CHAT and SEND_DCC_CHAT, deal
with DMSG messages.
* 2.1.1
Version 2.1.1 supports user defined functions. A user
defined functions is an alias that ASSIGNs a value to
FUNCTION_RETURN. Another alias can substitute the return
value with $%FUNCTION(ARGUMENTS). See /HELP ALIAS FUNCTIONS
Pattern matching has been improved. IRCII now has an idea
of the "best" match. This allows #* to be treated differently
to * in /ON NAMES, for example.
IF and WHILE now only use unescaped operators. Thus if it
is possible for a substitution in an if or while to produce
an operator, such as a channel name containing !, it can
be entered as $^!CHANNEL, escaping the ! and making IF
and WHILE work as expected.
Support has been added for privileged ports. If IRCII is
installed setuid->root it will attempt to bind the local
socket to a privileged port, allowing some servers to
verify connecting users on this basis. The PP_OBJS and
PP_DEFS macros in Makefile must be uncommented.